package it.cast.wechat.utils;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.InputStream;
import java.util.Optional;
import java.util.UUID;

public class UploadUtils {
    public static String upload(MultipartFile file, String path, String fileName) throws Exception {
        // 生成新的文件名
        String realPath = path + "/" + UUID.randomUUID().toString().replace("-", "")+fileName.substring(fileName.lastIndexOf("."));
        File dest = new File(realPath);
        // 判断文件父目录是否存在
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdir();
        }
        // 保存文件
        file.transferTo(dest);
        return dest.getName();
    }

    public static Optional<String> uploadImage(MultipartFile file, String fileRealPath , String fileSonPath){
        String path = null;// 文件路径
        String newFileName = null;
        fileRealPath = fileRealPath +"\\" + fileSonPath;
        try {
            if (file != null) {// 判断上传的文件是否为空
                String type = null;// 文件类型
                String fileName = file.getOriginalFilename();// 文件原名称
                // 判断文件类型
                type = fileName.indexOf(".") != -1 ? fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()) : null;
                if (type != null) {// 判断文件类型是否为空

                    if ("GIF".equals(type.toUpperCase()) || "PNG".equals(type.toUpperCase()) || "JPG".equals(type.toUpperCase())) {
                        // 设置存放图片文件的路径
                        String name = CommonUtils.uuid();
                        newFileName = name + "." + type;
                        path = fileRealPath + "\\" + newFileName;
                        // 转存文件到指定的路径
                        file.transferTo(new File(path));
                    }

                }
            }
        }catch (Exception e){
            return Optional.empty();
        }
        if(StringUtils.isEmpty(newFileName)){
            return Optional.empty();
        }
        return Optional.of( fileSonPath + "/" + newFileName );
    }
}
